A storage system is a computer that provides storage service relating to the organization of information on writeable persistent storage devices, such as memories, tapes or disks. The storage system is commonly deployed within a storage area network (SAN) or a network attached storage (NAS) environment. When used within a NAS environment, the storage system may be embodied as a file server including an operating system that implements a file system to logically organize the information as a hierarchical structure of directories and files on, e.g. the disks. Each “on-disk” file may be implemented as a set of data structures, e.g., disk blocks, configured to store information, such as the actual data for the file. A directory, on the other hand, may be implemented as a specially formatted file in which information about other files and directories are stored.
The file server, or filer, may be further configured to operate according to a client/server model of information delivery to thereby allow many client systems (clients) to access shared resources, such as files, stored on the filer. Sharing of files is a hallmark of a NAS system, which is enabled because of semantic level of access to files and file systems. Storage of information on a NAS system is typically deployed over a computer network comprising of a geographically distributed collection of interconnected communication links, such as Ethernet, that allow clients to remotely access the information to (files) on the file server. The clients typically communicate with the filer by exchanging discrete frames or packets of data according to pre-defined protocols, such as the Trans-mission Control Protocol/Internet Protocol (TCP/IP).
In the client/server model, the client may comprise an application executing on a computer that “connects” to the filer over a computer network, such as a point-to-point link, shared local area network, wide area network or virtual private network implemented over a public network, such as the Internet. NAS systems generally utilize file-based access protocols; therefore, each client may request the services of the filer by issuing file system protocol messages (in the form of packets) to the file system over the network. By supporting a plurality of file system protocols, such as the conventional Common Internet File System (CIFS), the Network File System (NFS) and the Direct Access File System (DAFS) protocols, the utility of the filer may be enhanced for networking clients.
A SAN is a high-speed network that enables establishment of direct connections between a storage system and its storage devices. The SAN may thus be viewed as an extension to a storage bus and, as such, an operating system of the storage system enables access to stored information using block-based access protocols over the “extended bus”. In this context, the extended bus is typically embodied as Fibre Channel (FC) or Ethernet media adapted to operate with block access protocols, such as Small Computer Systems Interface (SCSI) protocol encapsulation over FC (FCP) or TCP/IP/Ethernet (iSCSI). A SAN arrangement or deployment allows decoupling of storage from the storage system, such as an application server, and some level of storage sharing at the application server level. There are, however, environments wherein a SAN is dedicated to a single server. When used within a SAN environment, the storage system may be embodied as a storage appliance that manages data access to a set of disks using one or more block-based protocols, such as SCSI embedded in Fibre Channel (FCP). One example of a SAN arrangement, including a storage appliance suitable for use in the SAN, is described in U.S. Pat. No. 7,873,700, issued on Jan. 18, 2011, entitled MULTI-PROTOCOL STORAGE APPLIANCE THAT PROVIDES INTEGRATED SUPPORT FOR FILE AND BLOCK ACCESS PROTOCOLS, by Brian Pawlowski et al. In SCSI terminology, clients operating in a SAN environment are initiators that initiate requests and commands for data. A storage appliance is thus a target configured to respond to the requests issued by the initiators in accordance with a request/response protocol. A storage appliance may manage export control of virtual disks (vdisks) by logical names through the use of an igroup, which is a logical named entity that is assigned to one or more addresses, e.g., a World Wide Name (WWN) or iSCSI ID, associated with one or more initiators. Thus the igroup comprises a plurality of initiators associated together for ease of management.
It is advantageous for the services and data provided by a storage system, such as a storage appliance to be available for access to the greatest degree possible. Accordingly, some storage systems provide a plurality of storage appliances in a cluster, with a property that when a first storage appliance fails, the second storage appliance (“partner”) is available to take over and provide the services and the data otherwise provided by the first storage appliance. When the first storage appliance fails, the second partner storage appliance in the cluster assumes the tasks of processing and handling any data access requests normally processed by the first storage appliance. One such example of a storage appliance cluster configuration is described in U.S. Pat. No. 7,260,737, issued on Aug. 21, 2007, entitled SYSTEM AND METHOD FOR TRANSPORT-LEVEL FAILOVER OF FCP DEVICES IN A CLUSTER, by Arthur F. Lent, et al. An administrator may desire to take a storage appliance offline for a variety of reasons including, for example, to upgrade hardware. In such situations, it may be advantageous to perform a user-initiated takeover operation, as opposed to a failover operation. After the takeover operation is complete, the storage appliance's data is serviced by its partner until a give-back operation is performed.
In certain known storage appliance cluster implementations, the transport medium used for communication between clients and the cluster is Fibre Channel (FC) cabling utilizing the FCP protocol (SCSI embedded in FC) for transporting data. In known failover techniques involving clusters of storage appliances, each storage appliance in the cluster maintains two physical Fibre Channel ports, namely an A port and a B port. The A port (the “local port”) is utilized for processing and handling data access requests directed to the storage appliance. The B port (the “standby port”) typically is in a standby mode; when a failover situation occurs, the B port is activated and “assumes the identity” of its failed partner storage appliance. At that point, the B port receives and handles data access requests directed to the failed storage appliance. In this way, the surviving storage appliance may process requests directed to both the storage appliance and its failed partner storage appliance. Such a conventional FC failover is further described in the above-referenced patent application entitled SYSTEM AND METHOD FOR TRANSPORT-LEVEL FAILOVER OF FCP DEVICES IN A CLUSTER.
Virtual ports are utilized, in certain storage appliance cluster implementations, to reduce the number of ports required to provide failover ports for clients of a failed storage appliance (port burn). In such implementations, a plurality of virtual ports is associated with a given physical port. One such clustering system using virtual ports is described in U.S. Pat. No. 7,467,191, issued on Dec. 16, 2008, entitled SYSTEM AND METHOD FOR FAILOVER USING VIRTUAL PORTS IN CLUSTERED SYSTEMS, by Fang Wang, et al., the contents of which are hereby incorporated by reference.
Moreover, a storage appliance or system in a clustered environment may include an additional port (either physical or virtual) for use in receiving data access commands to be proxied to the partner storage system (a “proxy port” or “partner port”). In such environments, commands received by the proxy port are forwarded to the partner storage system for execution. An example of a proxying clustered storage system is described in U.S. Pat. No. 7,340,639, issued on Mar. 4, 2008, entitled SYSTEM AND METHOD FOR PROXYING DATA ACCESS COMMANDS IN A CLUSTER SYSTEM, by Herman Lee, et al.
Various commands are implemented in known user interface (UI) systems for a clustered storage system to provide a status of ports associated with the storage system. However, these commands typically do not provide information that is failover or proxy-specific such as, for example, whether a port is a virtual port or a physical port or how the port is to be used, e.g., as a failover port or a proxy port. Additionally, conventional UI systems lack the capability to set cluster modes for use of various ports in error situations. For example, although these conventional systems permit the creation of ports to be utilized during a failover or takeover, they do not include support for establishing ports for proxying data access commands or setting the use of ports on a per-initiator basis. Thus, conventional UI implementations do not have the capability to effectively manage the variety of ports in clustered storage system environments.